home *** CD-ROM | disk | FTP | other *** search
Wrap
(*************************************************** Ant Movie Catalog importation script www.antp.be/software/moviecatalog/ [Infos] Authors=Antoine Potten, Candyghost Title=DVDZone2 (Franτais) Description=Version franτaise de DVDZone2 Site=http://www.dvdzone2.com Language=FR Version= Requires=3.5.0 Comments= Rewritten by Antoine Potten Adapted by Candyghost Fixed Lenght + added subtitles License=This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. | GetInfo=1 [Options] ***************************************************) program DVDZone2_FR; var MovieName: string; function FindLine(Pattern: string; List: TStringList; StartAt: Integer): Integer; var i: Integer; begin result := -1; if StartAt < 0 then StartAt := 0; for i := StartAt to List.Count-1 do if Pos(Pattern, List.GetString(i)) <> 0 then begin result := i; Break; end; end; procedure AnalyzePage(Address: string); var Line, MovieItem, MovieTitle, MovieAddress: string; TitlePos, BeginPos, EndPos: Integer; List: TStringList; begin Line := GetPage(Address); PickTreeClear; if Pos('</b> : 0 item(s) found<br>', Line) = 0 then begin PickTreeAdd('Search results from DVDZone2', ''); BeginPos := Pos('<!-- CENTRAL TABLE -->', Line); EndPos := Pos('<!-- /CENTRAL TABLE -->', Line); Line := Copy(Line, BeginPos, EndPos - BeginPos); List := TStringList.Create; repeat TitlePos := Pos('<a href="http://www.dvdzone2.com/dvd/detail.asp', Line); if TitlePos > 0 then begin Delete(Line, 1, TitlePos); MovieItem := Copy(Line, 1, Pos('add2basket', Line)); BeginPos := Pos('"', MovieItem) + 1; EndPos := Pos('" class', MovieItem); MovieAddress := Copy(MovieItem, BeginPos, EndPos - BeginPos); BeginPos := Pos('">', MovieItem) + 2; EndPos := Pos('</a>', MovieItem); MovieTitle := Copy(MovieItem, BeginPos, EndPos - BeginPos); List.Text := MovieItem; MovieItem := Trim(List.GetString(3)); if MovieItem <> '' then MovieTitle := MovieTitle + ' [' + MovieItem + ']'; MovieItem := Trim(List.GetString(9)); if MovieItem <> '' then MovieTitle := MovieTitle + ' (' + MovieItem + ')'; PickTreeAdd(MovieTitle, MovieAddress); Delete(Line, 1, 25); end; until TitlePos = 0; List.Free; end; if PickTreeExec(Address) then AnalyzeMoviePage(Address); end; procedure AnalyzeMoviePage(Address: string); var Line, Value, FullValue: string; LineNr: Integer; BeginPos, EndPos: Integer; Page: TStringList; begin Line := GetPage(Address); BeginPos := Pos('<!-- CENTRAL TABLE -->', Line); EndPos := Pos('<!-- /CENTRAL TABLE -->', Line); Line := Copy(Line, BeginPos, EndPos - BeginPos); // title BeginPos := Pos('<span class="detail-title">', Line); Delete(Line, 1, BeginPos); BeginPos := Pos('>', Line) + 1; EndPos := Pos('</', Line); Value := Copy(Line, BeginPos, EndPos - BeginPos); HTMLDecode(Value); SetField(fieldTranslatedTitle, Value); // nbr de disques BeginPos := Pos('<b>Nombre de disque(s)</b>: ', Line); Delete(Line, 1, BeginPos); BeginPos := Pos(';', Line) + 1; EndPos := Pos('<br', Line); Value := Copy(Line, BeginPos, EndPos - BeginPos); HTMLDecode(Value); SetField(fieldDisks, Value); // picture BeginPos := Pos('http://www.dvdzone2.com/pictures/big/', Line); if BeginPos > 0 then begin Delete(Line, 1, BeginPos - 1); EndPos := Pos('"', Line); Value := Copy(Line, 1, EndPos - 1); GetPicture(Value); end; // description BeginPos := Pos('<p>', Line); Delete(Line, 1, BeginPos + 2); EndPos := Pos(#13, Line); Value := StringReplace(Copy(Line, 1, EndPos - 1), '<p>', #13#10#13#10); HTMLRemoveTags(Value); HTMLDecode(Value); SetField(FieldDescription, Value); // rating BeginPos := Pos('note globale', Line); if BeginPos > 0 then begin Delete(Line, 1, BeginPos); BeginPos := Pos('<b>', Line); if BeginPos > 0 then begin BeginPos := BeginPos + 3; EndPos := Pos(',', Line); Value := Copy(Line, BeginPos, EndPos - BeginPos); SetField(fieldRating, Value); end; end; Page := TStringList.Create; BeginPos := Pos('<td height="120" width="50%" class="dvd-detail-border-c" valign="top" align="left">', Line); Delete(Line, 1, BeginPos); EndPos := Pos('</table>', Line); Page.Text := Copy(Line, 1, EndPos); // titre original SetField(fieldOriginalTitle, GetInfo('<b>Titre original', Page)); // director SetField(fieldDirector, GetInfo('<b>RΘalisateur(s)', Page)); // actors SetField(fieldActors, StringReplace(GetInfo('<b>Acteurs', Page), ' - ', ', ')); // country SetField(fieldCountry, GetInfo('<b>Pays', Page)); // year SetField(fieldYear, GetInfo('<b>AnnΘe', Page)); // studio (producer) SetField(fieldProducer, GetInfo('<b>Studio', Page)); // category SetField(fieldCategory, GetInfo('<b>Genres', Page)); // format vidΘo SetField(fieldVideoFormat, GetInfo('<b>Format vidΘo', Page)); // length Value := GetInfo('<b>DurΘe', Page); EndPos := Pos('min', Value); SetField(fieldLength, Copy(Value, 1, EndPos - 2)); // Sous-titres BeginPos := Pos('<span class="px11">SOUS-TITRES</span>', Line); Delete(Line, 1, BeginPos); BeginPos := Pos('</td>', Line); Delete(Line, 1, BeginPos); BeginPos := Pos('<td class=""dvd-detail-border-left"" align=""center"" valign=""middle"" colspan=""2"">', Line); Delete(Line, 1, BeginPos + 96); Value := Copy(Line , BeginPos , Length(Line)); EndPos := Pos('</td>', Value); Value := Copy(Value , 1, EndPos -5); HTMLRemoveTags(Value); HTMLDecode(Value); SetField(fieldSubtitles, Value); // special features (comments) BeginPos := Pos('<span class="detail-title">Les Bonus</span>', Line); Delete(Line, 1, BeginPos); EndPos := Pos('</table>', Line); Delete(Line, EndPos, Length(Line)); FullValue := ''; repeat BeginPos := Pos('</tr>', Line); Delete(Line, 1, BeginPos); BeginPos := Pos('<tr>', Line); if BeginPos > 0 then begin BeginPos := Pos('<b>', Line); if BeginPos > 0 then begin Value := Copy(Line, BeginPos + 3, Length(Line)); EndPos := Pos(#10, Value); Value := StringReplace(Copy(Value, 1, EndPos - 1), '<br>', ' '); HTMLRemoveTags(Value); HTMLDecode(Value); FullValue := FullValue + '- ' + Value + #13#10; end; end; until (Pos('<tr>', Line) = 0) or (Pos('<b>', Line) = 0); if FullValue <> '' then SetField(fieldComments, 'Bonus:' + #13#10 + FullValue); Page.Free; //DisplayResults; end; function GetInfo(Name: string; Page: TStringList): string; var LineNr, BeginPos, EndPos: Integer; Value, Line: string; begin LineNr := FindLine(Name, Page, 0); if LineNr > 0 then begin Line := Page.GetString(LineNr); BeginPos := Pos(': ', Line) + 7; EndPos := Pos('<br>', Line); Value := Copy(Line, BeginPos, EndPos - BeginPos); HTMLRemoveTags(Value); HTMLDecode(Value); Result := Value; end else Result := ''; end; begin if CheckVersion(3,5,0) then begin MovieName := GetField(fieldOriginalTitle); if MovieName = '' then MovieName := GetField(fieldTranslatedTitle); if Input('DVDZone2 (FR) Import', 'Entrez le titre du film:', MovieName) then begin GetPage('http://www.dvdzone2.com/language.asp?id=fra&dest=dvd'); AnalyzePage('http://www.dvdzone2.com/dvd/search.asp?t=1&kw=' + UrlEncode(MovieName) + '&kwt=t&pl=all'); end; end else ShowMessage('This script requires a newer version of Ant Movie Catalog (at least the version 3.5.0)'); end.